Computers have become highly integrated in the workforce, in the home, in mobile devices, and many other places. Computers can process massive amounts of information quickly and efficiently. Software applications designed to run on computer systems allow users to perform a wide variety of functions including business applications, schoolwork, entertainment and more. Software applications are often designed to perform specific tasks, such as word processor applications for drafting documents, or email programs for sending, receiving and organizing email.
In some cases, software applications may be designed to interact with other software applications or other computer systems. For example, a client may interact with a server or database using a software application. The database may be configured to supply data to the user in response to the user's requests. The database may keep certain portions of the data in caches, while the other data resides on disk. The data portions in the caches change over time as different portions of data are accessed. Eviction algorithms are used by the database to continually clean out the cache. These eviction algorithms, however, are not always efficient.